
import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '../views/Home.vue'
import IndexView from '../views/IndexView.vue'
import UserView from '../views/UserView.vue'
import BookView from '../views/BookView.vue'
import BorrowView from '../views/BorrowView.vue'
import LoginView from '../views/LoginView.vue'
import Competition from '../views/competitionView.vue'
import {useUserStore} from '../stores/useUser.ts'

const router = createRouter({
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
      redirect: '/index',
      children: [
        {
          path: '/index',
          name: 'index',
          component: IndexView,
          meta: {
            role: ['admin','teacher','student']//三种身份都可以访问首页的子页面
          }// #####角色控制，判断用户是否可以访问特定路由
        },
        {
          path: '/user',
          name: 'user',
          component: UserView,
          meta: {
            role: ['admin','teacher']//只有管理员和老师可以访问用户管理页面
          }
        },
        {
          path: '/book',
          name: 'book',
          component: BookView,
          meta: {
            role: ['admin','teacher']//只有管理员和老师可以访问图书管理页面
            
          }
        },
        {
          path: '/borrow',
          name: 'borrow',
          component: BorrowView,
          meta: {
            role: ['admin','student']//只有学生可以访问借阅管理页面
          }
        },
        {
          path:'/competition',
          name: 'competition',
          component: Competition,
          meta: {
            role: ['admin','teacher','student']//三种身份都可以访问竞赛页面
          }
        }
      ]
    },
        {
      path: '/login',
      name: 'login',
      component: LoginView,
      meta: {
        role: ['admin','teacher','student']//三种身份都可以访问登录页面
      }
    },
  ]
})

// 路由守卫
router.beforeEach((to, from, next) => {
  const userStore = useUserStore()
  const userinfo = userStore.getUserInfo()// 获取用户信息
  const requestRoles = to.meta.role// 请求的页面需要的角色权限数组

  // console.log('用户数据',userinfo)
  // console.log('数据据',requestRoles)


  if (!userinfo) { // 未登录的情况
    if (to.name === 'login') { // 如果是登录页面，直接进入
      next()
    }else{
      next({name: 'login'})
    }
    return
}

//判断用户权限，是否可以访问该页面
if(requestRoles && !requestRoles.includes(userinfo.role)) { //如果用户没有权限访问该页面，并且不是登录页面，则跳转到404页面
  //如果meta.role不存在相应用户的角色，则跳转到404页面
  next({name: '404'})//如果没有权限访问的页面，跳转到404页面
}
next()
})

export default router
